package com.isc.homework02;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * 1.编写一个接收端A和一个发送端B，使用UDP协议完成
 * 2.接收端在8888端口等待接收数据
 * 3.发送端想接收端发送数据 "四大名著是哪些?"
 * 4.接收端接收到发送端发送的问题后，返回"四大名著是<<红楼梦>>...",否则返回what?
 * 5.接收端和发送端程序退出
 */
public class ReceiverA {
    public static void main(String[] args) throws IOException {
        //使用UDP协议
        int port = 8888;
        DatagramSocket datagramSocket = new DatagramSocket(port);
        System.out.println("在" + port + "端口监听...");

        //接收发送端的信息
        byte[] buf = new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length);
        //使用UDP套接字接收发送端信息，把数据放在datagramPacket中
        datagramSocket.receive(datagramPacket);
        byte[] data = datagramPacket.getData();
        int dataLength = datagramPacket.getLength();
        String info = new String(data, 0, dataLength);
        System.out.println("接收到发送端的消息是:" + info);

        //接收端接收到发送端发送的问题后，返回"四大名著是<<红楼梦>>...",否则返回what?
        //目的IP
        String destIp = "127.0.0.1";
        //目的端口
        int destPort = 8889;
        //回复消息
        //判断接收到的消息是否正确
        if ("四大名著是哪些?".equals(info)) {
            info = "四大名著是<<红楼梦>>、<<三国演义>>、<<水浒传>>、<<西游记>>";
        } else {
            info = "what?";
        }
        datagramPacket =
                new DatagramPacket(info.getBytes(), 0, info.getBytes().length, InetAddress.getByName(destIp), destPort);
        //使用UDP套接字发送数据
        datagramSocket.send(datagramPacket);
        System.out.println("回复消息成功~");

        //关闭资源
        datagramSocket.close();
        System.out.println("断开连接...");
    }
}
